package cn.cjxy.javaweb.servlet.response;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 *
 * 重定向的特点
 * 1）由于客户端重定向是客户端再次请求，因此客户端的地址栏的地址已经发生了变化；
 * 2）客户端请求了两次服务器
 * 3）在整个重定向过程中，客户端发送了两次请求，请求域中的数据丢失；
 * 4）重定向是客户端行为（客户端再次请求），我们需要加上项目名；例如：sendRedirect("request.getContextPath()+/demo01")
 * Tips：如果需要保留请求域中的数据，使用转发，否则使用重定向。
 *
 *      区别 	转发	                                重定向
 * 根目录	    采用服务器根目录：/02_request/	        采用客户端根目录：http://localhost:8080/
 * 客户端地址栏	    不会变化	                        会
 * 哪里跳转	    由服务器进行的跳转	                        由客户端浏览器进行的跳转
 * 请求域	    不会丢失数据	                            会，因为不是同一次请求
 *
 *  不管是转发还是重定向后面的代码依旧会执行！
 * @author huangjie
 * @date 2025/9/29
 */
@WebServlet("/respDemo2")
public class ResponseDemo2 extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        //取值
        Object user = req.getAttribute("user");//取不到  请求发生变化，所以取不到
        System.out.println(user);
        System.out.println("hahahahahha");
    }
}
